package com.wkh.datastructure.ReverseLinkedList;


//反转链表----方法四 ----> 双指针
public class demo4 {
    public static void main(String[] args) {
        ListNode node4 = new ListNode(null, 4);
        ListNode node3 = new ListNode(node4, 3);
        ListNode node2 = new ListNode(node3, 2);
        ListNode node1= new ListNode(node2, 1);
        ListNode reverse = reverse(node1);
    }

    //递归函数
    private static ListNode reverse(ListNode node1) {
        //1.空链表  2.链表中只有一个结点
        if (node1 == null || node1.next == null){
            return node1;
        }
        ListNode o2 = node1.next;//指向node1的下一个结点
        ListNode n1 = node1;//新链表
        while(o2!=null){
            node1.next = o2.next;//把o2结点取出
            o2.next = n1;
            n1 = o2;
            o2 = node1.next;
        }
        return n1;
    }
}
